package com.aspose.cells;

final class zakg {
   private static final int[] o = new int[]{0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535};
   int a;
   int b;
   int[] c;
   int d = 0;
   int e;
   int f;
   int g;
   int h;
   byte i;
   byte j;
   int[] k;
   int l;
   int[] m;
   int n;

   void a(int var1, int var2, int[] var3, int var4, int[] var5, int var6, zcgb var7) {
      this.a = 0;
      this.i = (byte)var1;
      this.j = (byte)var2;
      this.k = var3;
      this.l = var4;
      this.m = var5;
      this.n = var6;
      this.c = null;
   }

   int a(zakf var1, zcgb var2, int var3) {
      boolean var8 = false;
      boolean var9 = false;
      boolean var10 = false;
      int var19 = var2.b;
      int var11 = var2.c;
      int var17 = var1.l;
      int var18 = var1.k;
      int var12 = var1.q;
      int var13 = var12 < var1.p ? var1.p - var12 - 1 : var1.o - var12;

      while(true) {
         int var4;
         int var6;
         int var7;
         byte var15;
         switch(this.a) {
         case 0:
            if (var13 >= 258 && var11 >= 10) {
               var1.l = var17;
               var1.k = var18;
               var2.c = var11;
               var2.d += (long)(var19 - var2.b);
               var2.b = var19;
               var1.q = var12;
               var3 = this.a(this.i, this.j, this.k, this.l, this.m, this.n, var1, var2);
               var19 = var2.b;
               var11 = var2.c;
               var17 = var1.l;
               var18 = var1.k;
               var12 = var1.q;
               var13 = var12 < var1.p ? var1.p - var12 - 1 : var1.o - var12;
               if (var3 != 0) {
                  this.a = var3 == 1 ? 7 : 9;
                  break;
               }
            }

            this.e = this.i;
            this.c = this.k;
            this.d = this.l;
            this.a = 1;
         case 1:
            for(var4 = this.e; var18 < var4; var18 += 8) {
               if (var11 == 0) {
                  var1.l = var17;
                  var1.k = var18;
                  var2.c = var11;
                  var2.d += (long)(var19 - var2.b);
                  var2.b = var19;
                  var1.q = var12;
                  return var1.b(var2, var3);
               }

               var3 = 0;
               --var11;
               var17 |= (var2.a[var19++] & 255) << var18;
            }

            var6 = (this.d + (var17 & o[var4])) * 3;
            var17 >>>= this.c[var6 + 1];
            var18 -= this.c[var6 + 1];
            var7 = this.c[var6];
            if (var7 == 0) {
               this.f = this.c[var6 + 2];
               this.a = 6;
            } else if ((var7 & 16) != 0) {
               this.g = var7 & 15;
               this.b = this.c[var6 + 2];
               this.a = 2;
            } else if ((var7 & 64) == 0) {
               this.e = var7;
               this.d = var6 / 3 + this.c[var6 + 2];
            } else {
               if ((var7 & 32) == 0) {
                  this.a = 9;
                  var2.i = "invalid literal/length code";
                  var15 = -3;
                  var1.l = var17;
                  var1.k = var18;
                  var2.c = var11;
                  var2.d += (long)(var19 - var2.b);
                  var2.b = var19;
                  var1.q = var12;
                  return var1.b(var2, var15);
               }

               this.a = 7;
            }
            break;
         case 2:
            for(var4 = this.g; var18 < var4; var18 += 8) {
               if (var11 == 0) {
                  var1.l = var17;
                  var1.k = var18;
                  var2.c = var11;
                  var2.d += (long)(var19 - var2.b);
                  var2.b = var19;
                  var1.q = var12;
                  return var1.b(var2, var3);
               }

               var3 = 0;
               --var11;
               var17 |= (var2.a[var19++] & 255) << var18;
            }

            this.b += var17 & o[var4];
            var17 >>= var4;
            var18 -= var4;
            this.e = this.j;
            this.c = this.m;
            this.d = this.n;
            this.a = 3;
         case 3:
            for(var4 = this.e; var18 < var4; var18 += 8) {
               if (var11 == 0) {
                  var1.l = var17;
                  var1.k = var18;
                  var2.c = var11;
                  var2.d += (long)(var19 - var2.b);
                  var2.b = var19;
                  var1.q = var12;
                  return var1.b(var2, var3);
               }

               var3 = 0;
               --var11;
               var17 |= (var2.a[var19++] & 255) << var18;
            }

            var6 = (this.d + (var17 & o[var4])) * 3;
            var17 >>= this.c[var6 + 1];
            var18 -= this.c[var6 + 1];
            var7 = this.c[var6];
            if ((var7 & 16) != 0) {
               this.g = var7 & 15;
               this.h = this.c[var6 + 2];
               this.a = 4;
            } else {
               if ((var7 & 64) != 0) {
                  this.a = 9;
                  var2.i = "invalid distance code";
                  var15 = -3;
                  var1.l = var17;
                  var1.k = var18;
                  var2.c = var11;
                  var2.d += (long)(var19 - var2.b);
                  var2.b = var19;
                  var1.q = var12;
                  return var1.b(var2, var15);
               }

               this.e = var7;
               this.d = var6 / 3 + this.c[var6 + 2];
            }
            break;
         case 4:
            for(var4 = this.g; var18 < var4; var18 += 8) {
               if (var11 == 0) {
                  var1.l = var17;
                  var1.k = var18;
                  var2.c = var11;
                  var2.d += (long)(var19 - var2.b);
                  var2.b = var19;
                  var1.q = var12;
                  return var1.b(var2, var3);
               }

               var3 = 0;
               --var11;
               var17 |= (var2.a[var19++] & 255) << var18;
            }

            this.h += var17 & o[var4];
            var17 >>= var4;
            var18 -= var4;
            this.a = 5;
         case 5:
            int var14;
            for(var14 = var12 - this.h; var14 < 0; var14 += var1.o) {
               ;
            }

            for(; this.b != 0; --this.b) {
               if (var13 == 0) {
                  if (var12 == var1.o && var1.p != 0) {
                     var12 = 0;
                     var13 = var12 < var1.p ? var1.p - var12 - 1 : var1.o - var12;
                  }

                  if (var13 == 0) {
                     var1.q = var12;
                     var3 = var1.b(var2, var3);
                     var12 = var1.q;
                     var13 = var12 < var1.p ? var1.p - var12 - 1 : var1.o - var12;
                     if (var12 == var1.o && var1.p != 0) {
                        var12 = 0;
                        var13 = var12 < var1.p ? var1.p - var12 - 1 : var1.o - var12;
                     }

                     if (var13 == 0) {
                        var1.l = var17;
                        var1.k = var18;
                        var2.c = var11;
                        var2.d += (long)(var19 - var2.b);
                        var2.b = var19;
                        var1.q = var12;
                        return var1.b(var2, var3);
                     }
                  }
               }

               var1.n[var12++] = var1.n[var14++];
               --var13;
               if (var14 == var1.o) {
                  var14 = 0;
               }
            }

            this.a = 0;
            break;
         case 6:
            if (var13 == 0) {
               if (var12 == var1.o && var1.p != 0) {
                  var12 = 0;
                  var13 = var12 < var1.p ? var1.p - var12 - 1 : var1.o - var12;
               }

               if (var13 == 0) {
                  var1.q = var12;
                  var3 = var1.b(var2, var3);
                  var12 = var1.q;
                  var13 = var12 < var1.p ? var1.p - var12 - 1 : var1.o - var12;
                  if (var12 == var1.o && var1.p != 0) {
                     var12 = 0;
                     var13 = var12 < var1.p ? var1.p - var12 - 1 : var1.o - var12;
                  }

                  if (var13 == 0) {
                     var1.l = var17;
                     var1.k = var18;
                     var2.c = var11;
                     var2.d += (long)(var19 - var2.b);
                     var2.b = var19;
                     var1.q = var12;
                     return var1.b(var2, var3);
                  }
               }
            }

            var3 = 0;
            var1.n[var12++] = (byte)this.f;
            --var13;
            this.a = 0;
            break;
         case 7:
            if (var18 > 7) {
               var18 -= 8;
               ++var11;
               --var19;
            }

            var1.q = var12;
            var3 = var1.b(var2, var3);
            var12 = var1.q;
            int var10000;
            if (var12 < var1.p) {
               var10000 = var1.p - var12 - 1;
            } else {
               var10000 = var1.o - var12;
            }

            if (var1.p != var1.q) {
               var1.l = var17;
               var1.k = var18;
               var2.c = var11;
               var2.d += (long)(var19 - var2.b);
               var2.b = var19;
               var1.q = var12;
               return var1.b(var2, var3);
            }

            this.a = 8;
         case 8:
            byte var16 = 1;
            var1.l = var17;
            var1.k = var18;
            var2.c = var11;
            var2.d += (long)(var19 - var2.b);
            var2.b = var19;
            var1.q = var12;
            return var1.b(var2, var16);
         case 9:
            var15 = -3;
            var1.l = var17;
            var1.k = var18;
            var2.c = var11;
            var2.d += (long)(var19 - var2.b);
            var2.b = var19;
            var1.q = var12;
            return var1.b(var2, var15);
         default:
            var15 = -2;
            var1.l = var17;
            var1.k = var18;
            var2.c = var11;
            var2.d += (long)(var19 - var2.b);
            var2.b = var19;
            var1.q = var12;
            return var1.b(var2, var15);
         }
      }
   }

   void a(zcgb var1) {
   }

   int a(int var1, int var2, int[] var3, int var4, int[] var5, int var6, zakf var7, zcgb var8) {
      int var15 = var8.b;
      int var16 = var8.c;
      int var13 = var7.l;
      int var14 = var7.k;
      int var17 = var7.q;
      int var18 = var17 < var7.p ? var7.p - var17 - 1 : var7.o - var17;
      int var19 = o[var1];
      int var20 = o[var2];

      int var21;
      label141:
      do {
         while(var14 < 20) {
            --var16;
            var13 |= (var8.a[var15++] & 255) << var14;
            var14 += 8;
         }

         int var9 = var13 & var19;
         int[] var10 = var3;
         int var11 = var4;
         int var24 = (var4 + var9) * 3;
         int var12;
         if ((var12 = var3[var24]) == 0) {
            var13 >>= var3[var24 + 1];
            var14 -= var3[var24 + 1];
            var7.n[var17++] = (byte)var3[var24 + 2];
            --var18;
         } else {
            do {
               var13 >>= var10[var24 + 1];
               var14 -= var10[var24 + 1];
               if ((var12 & 16) != 0) {
                  var12 &= 15;
                  var21 = var10[var24 + 2] + (var13 & o[var12]);
                  var13 >>= var12;

                  for(var14 -= var12; var14 < 15; var14 += 8) {
                     --var16;
                     var13 |= (var8.a[var15++] & 255) << var14;
                  }

                  var9 = var13 & var20;
                  var10 = var5;
                  var11 = var6;
                  var24 = (var6 + var9) * 3;
                  var12 = var5[var24];

                  while(true) {
                     var13 >>= var10[var24 + 1];
                     var14 -= var10[var24 + 1];
                     if ((var12 & 16) != 0) {
                        for(var12 &= 15; var14 < var12; var14 += 8) {
                           --var16;
                           var13 |= (var8.a[var15++] & 255) << var14;
                        }

                        int var22 = var10[var24 + 2] + (var13 & o[var12]);
                        var13 >>= var12;
                        var14 -= var12;
                        var18 -= var21;
                        int var10000;
                        int var23;
                        if (var17 >= var22) {
                           var23 = var17 - var22;
                           if (var17 - var23 > 0 && 2 > var17 - var23) {
                              var7.n[var17++] = var7.n[var23++];
                              var7.n[var17++] = var7.n[var23++];
                              var21 -= 2;
                           } else {
                              System.arraycopy(var7.n, var23, var7.n, var17, 2);
                              var17 += 2;
                              var23 += 2;
                              var21 -= 2;
                           }
                        } else {
                           var23 = var17 - var22;

                           do {
                              var23 += var7.o;
                           } while(var23 < 0);

                           var12 = var7.o - var23;
                           if (var21 > var12) {
                              var21 -= var12;
                              if (var17 - var23 > 0 && var12 > var17 - var23) {
                                 do {
                                    var7.n[var17++] = var7.n[var23++];
                                    --var12;
                                 } while(var12 != 0);
                              } else {
                                 System.arraycopy(var7.n, var23, var7.n, var17, var12);
                                 var17 += var12;
                                 var10000 = var23 + var12;
                                 boolean var25 = false;
                              }

                              var23 = 0;
                           }
                        }

                        if (var17 - var23 > 0 && var21 > var17 - var23) {
                           do {
                              var7.n[var17++] = var7.n[var23++];
                              --var21;
                           } while(var21 != 0);
                        } else {
                           System.arraycopy(var7.n, var23, var7.n, var17, var21);
                           var17 += var21;
                           var10000 = var23 + var21;
                           boolean var26 = false;
                        }
                        continue label141;
                     }

                     if ((var12 & 64) != 0) {
                        var8.i = "invalid distance code";
                        var21 = var8.c - var16;
                        var21 = var14 >> 3 < var21 ? var14 >> 3 : var21;
                        var16 += var21;
                        var15 -= var21;
                        var14 -= var21 << 3;
                        var7.l = var13;
                        var7.k = var14;
                        var8.c = var16;
                        var8.d += (long)(var15 - var8.b);
                        var8.b = var15;
                        var7.q = var17;
                        return -3;
                     }

                     var9 += var10[var24 + 2];
                     var9 += var13 & o[var12];
                     var24 = (var11 + var9) * 3;
                     var12 = var10[var24];
                  }
               }

               if ((var12 & 64) != 0) {
                  if ((var12 & 32) != 0) {
                     var21 = var8.c - var16;
                     var21 = var14 >> 3 < var21 ? var14 >> 3 : var21;
                     var16 += var21;
                     var15 -= var21;
                     var14 -= var21 << 3;
                     var7.l = var13;
                     var7.k = var14;
                     var8.c = var16;
                     var8.d += (long)(var15 - var8.b);
                     var8.b = var15;
                     var7.q = var17;
                     return 1;
                  }

                  var8.i = "invalid literal/length code";
                  var21 = var8.c - var16;
                  var21 = var14 >> 3 < var21 ? var14 >> 3 : var21;
                  var16 += var21;
                  var15 -= var21;
                  var14 -= var21 << 3;
                  var7.l = var13;
                  var7.k = var14;
                  var8.c = var16;
                  var8.d += (long)(var15 - var8.b);
                  var8.b = var15;
                  var7.q = var17;
                  return -3;
               }

               var9 += var10[var24 + 2];
               var9 += var13 & o[var12];
               var24 = (var11 + var9) * 3;
            } while((var12 = var10[var24]) != 0);

            var13 >>= var10[var24 + 1];
            var14 -= var10[var24 + 1];
            var7.n[var17++] = (byte)var10[var24 + 2];
            --var18;
         }
      } while(var18 >= 258 && var16 >= 10);

      var21 = var8.c - var16;
      var21 = var14 >> 3 < var21 ? var14 >> 3 : var21;
      var16 += var21;
      var15 -= var21;
      var14 -= var21 << 3;
      var7.l = var13;
      var7.k = var14;
      var8.c = var16;
      var8.d += (long)(var15 - var8.b);
      var8.b = var15;
      var7.q = var17;
      return 0;
   }
}
